/**
 * 变量定义：var a = 12;
 *
 * 函数声明：function a (){};
 *
 * 函数表达式： var a = function(){};
 *
 *  下面来分析执行的上下文环境
 */

//浏览器做的准备工作。先从上下文中找的定义的变量。此时变量都=undefined ，只有在执行过程中执行赋值时，才会给变量赋值。
var a = 1;
console.log(a); //1
console.log(b); //undefined
var b = 12;

console.log('-----------------------------------------');

//函数声明式写法。浏览器做准备工作时候就把上下文中的声明的函数赋值了。
console.log(bb); //funtion b(){}
function bb() {};

console.log('-----------------------------------------');
//函数表达式：浏览器在做准备工作时先定义变量c , 赋值是在执行过程中赋值的。
console.log(c); //undefined
var c = function () {};

/**
 *  我们总结一下，在“准备工作”中完成了哪些工作：
 *  变量、函数表达式——变量声明，默认赋值为undefined；
 *  this——赋值；
 *  函数声明——赋值；
 *  这三种数据的准备情况我们称之为“执行上下文”或者“执行上下文环境”
 */





